package com.lin.manager.controller.task;

import com.lin.manager.aop.Log;
import com.lin.manager.common.enums.LogEnum;
import com.lin.manager.common.req.QueryPage;
import com.lin.manager.common.resp.R;
import com.lin.manager.task.entity.TaskBusEntity;
import com.lin.manager.task.model.TaskPlainVo;
import com.lin.manager.task.service.TaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @作者: 林江
 * @创建时间: 2024/3/21
 * @功能:
 */
@Api(tags = "任务管理")
@RestController
@RequestMapping("task")
public class TaskController {

    @Autowired
    private TaskService taskService;

    @ApiOperation("任务管理 - 分页查询任务")
    @Log(module = "任务管理", descipt = "分页查询任务", type = LogEnum.SELECT)
    @GetMapping("listPage")
    public R listPage(QueryPage page) {
        return R.ok(taskService.listByPage(page));
    }

    @ApiOperation("任务管理 - 查询所有任务")
    @Log(module = "任务管理", descipt = "查询所有任务", type = LogEnum.SELECT)
    @GetMapping("list")
    public R list() {
        return R.ok(taskService.list());
    }

    @ApiOperation("任务管理 - 添加任务")
    @Log(module = "任务管理", descipt = "添加任务", type = LogEnum.INSERT)
    @PostMapping("add")
    public R add(@RequestBody TaskBusEntity taskBus) throws Exception {
        taskService.saveJob(taskBus);
        return R.ok();
    }

    @ApiOperation("任务管理 - 修改任务")
    @Log(module = "任务管理", descipt = "修改任务", type = LogEnum.UPDATE)
    @PostMapping("update")
    public R update(@RequestBody TaskBusEntity taskBus) throws Exception {
        taskService.updateJob(taskBus);
        return R.ok();
    }

    @ApiOperation("任务管理 - 删除任务")
    @Log(module = "任务管理", descipt = "删除任务", type = LogEnum.DELETE)
    @DeleteMapping("delete")
    public R del(String id) throws Exception {
        taskService.deleteJobById(id);
        return R.ok();
    }

    @ApiOperation("任务管理 - 分页查询任务计划")
    @Log(module = "任务管理", descipt = "分页查询任务计划", type = LogEnum.SELECT)
    @GetMapping("listPlanPage")
    public R listPlanPage(QueryPage page) {
        return R.ok(taskService.listPlanPage(page));
    }

    @ApiOperation("任务管理 - 查询所有任务计划")
    @Log(module = "任务管理", descipt = "查询所有任务计划", type = LogEnum.SELECT)
    @GetMapping("listPlan")
    public R listPlan() {
        return R.ok(taskService.listPlan());
    }

    @ApiOperation("任务管理 - 添加任务计划")
    @Log(module = "任务管理", descipt = "添加任务计划", type = LogEnum.INSERT)
    @PostMapping("addPlan")
    public R addPlan(@RequestBody TaskPlainVo taskPlain) throws Exception {
        taskService.savePlan(taskPlain);
        return R.ok();
    }

    @ApiOperation("任务管理 - 修改任务计划")
    @Log(module = "任务管理", descipt = "修改任务计划", type = LogEnum.UPDATE)
    @PostMapping("updatePlan")
    public R updatePlan(@RequestBody TaskPlainVo taskPlain) throws Exception {
        taskService.updatePlan(taskPlain);
        return R.ok();
    }

    @ApiOperation("任务管理 - 删除任务计划")
    @Log(module = "任务管理", descipt = "删除任务计划", type = LogEnum.DELETE)
    @DeleteMapping("delPlan")
    public R delPlan(String id) throws Exception {
        taskService.deletePlanById(id);
        return R.ok();
    }

    @ApiOperation("任务管理 - 暂停任务计划")
    @Log(module = "任务管理", descipt = "暂停任务计划", type = LogEnum.UPDATE)
    @GetMapping("pausePlan")
    public R pausePlan(String id, String group) throws Exception {
        taskService.pausePlan(id, group);
        return R.ok();
    }

    @ApiOperation("任务管理 - 启动任务计划")
    @Log(module = "任务管理", descipt = "启动任务计划", type = LogEnum.UPDATE)
    @GetMapping("startPlan")
    public R startPlan(String id, String group) throws Exception {
        taskService.startPlan(id, group);
        return R.ok();
    }
}
